import errorLogger, { setQueueImplementation } from './error-logger';
import { createCustomQueue } from './custom-queue-example';

/**
 * 错误日志工具使用示例 - 自定义队列实现
 */

// 1. 使用默认队列实现
function useDefaultQueue() {
  console.log('=== 使用默认队列实现 ===');
  
  // 记录一个错误
  errorLogger.log({
    type: 'js',
    error: new Error('测试错误'),
    message: '这是一个测试错误',
    source: 'useDefaultQueue'
  });
  
  // 手动刷新
  errorLogger.flush();
}

// 2. 使用自定义队列实现
function useCustomQueue() {
  console.log('=== 使用自定义队列实现 ===');
  
  // 创建自定义队列实例
  const customQueue = createCustomQueue();
  
  // 设置自定义队列实现
  setQueueImplementation(customQueue);
  
  // 记录一个错误
  errorLogger.log({
    type: 'network',
    error: { errMsg: '请求超时', errCode: 'TIMEOUT' },
    message: '网络请求超时',
    source: 'useCustomQueue'
  });
  
  // 手动刷新
  errorLogger.flush();
}

// 3. 使用自定义队列并更新配置
function useCustomQueueWithConfig() {
  console.log('=== 使用自定义队列并更新配置 ===');
  
  // 创建自定义队列实例
  const customQueue = createCustomQueue();
  
  // 更新配置并设置自定义队列
  errorLogger.updateConfig({
    maxRetries: 5,
    retryDelay: 3000,
    batchSize: 5
  }, customQueue);
  
  // 记录一个错误
  errorLogger.log({
    type: 'custom',
    error: '自定义错误',
    message: '这是一个带自定义配置的错误',
    source: 'useCustomQueueWithConfig'
  });
}

// 导出示例函数
export {
  useDefaultQueue,
  useCustomQueue,
  useCustomQueueWithConfig
};

export default {
  useDefaultQueue,
  useCustomQueue,
  useCustomQueueWithConfig
}; 